/*
  Reverse a linked list and return pointer to the head
  The input list will have at least one element  
  Node is defined as 
  struct Node
  {
     int data;
     struct Node *next;
  }
*/
Node* Reverse(Node *head)
{
    // Complete this method
    Node *pn = head->next;
    if(pn == NULL) {
        head->next = NULL;
        return head;
    }
    Node *r = Reverse(head->next);
    pn->next = head;
    head->next = NULL;
    return r;
}